// 短信签名
import { DataTypes, Model, UUIDV4 } from 'sequelize';
import { MySqlModel, getSequelize } from '../db';

class SmsSign extends MySqlModel {

}

SmsSign.init({
  id: {
    type: DataTypes.UUID, unique: 'id', allowNull: false, defaultValue: UUIDV4, validate: { isUUID: 4 }, primaryKey: true, comment: '主键'
  },
  ownerId: { type: DataTypes.INTEGER, allowNull: true, defaultValue: null, comment: 'Not Used' },
  signCode: { type: DataTypes.STRING(50), allowNull: true, comment: '签名代码' },
  signName: { type: DataTypes.STRING(12), allowNull: false, comment: '签名名称' }, // 签名名称，签名名称请遵守签名规范。
  remark: { type: DataTypes.STRING(200), allowNull: false, comment: '模板审核的参考信息' }, // 短信签名场景说明，长度不超过 200 个字符。
  signType: { type: DataTypes.INTEGER, allowNull: false, defaultValue: 1, comment: '签名类型。 0：验证码1：通用' },
  moreData: { type: DataTypes.STRING(200), allowNull: false, comment: '更多资料' }, // 更多资料，补充上传业务证明文件或业务截图，有助于审核人员了解您的业务详情。上传到 OSS 上的文件信息。您可以通过 GetOSSInfoForUploadFile 接口获取文件信息。
  qualificationId: { type: DataTypes.INTEGER, allowNull: false, comment: '应用场景' },// 应用场景 资质 ID。required
  applySceneContent: { type: DataTypes.STRING(30), allowNull: true, comment: '应用场景' },// 应用场景
  signSource: { type: DataTypes.INTEGER, allowNull: false, defaultValue: 3, comment: '签名来源' },
  // 签名来源。取值：0：企事业单位的全称或简称。1：工信部备案网站的全称或简称。2：App 应用的全称或简称。3：公众号或小程序的全称或简称。4：电商平台店铺名的全称或简称。5：商标名的全称或简称。
  auditStatus: { type: DataTypes.STRING(30), allowNull: false, defaultValue: 'AUDIT_STATE_INIT', comment: '审核状态' },
  businessType: { type: DataTypes.STRING(30), allowNull: true, defaultValue: '通用类型', comment: '适用场景' },
  createDate: { type: DataTypes.STRING(20), allowNull: true, comment: '申请时间' },
  auditDate: { type: DataTypes.DATE, allowNull: true, defaultValue: null, comment: '审核失败时间' },
  rejectInfo: { type: DataTypes.STRING(200), allowNull: true, defaultValue: null, comment: '失败原因' },
  orderId: { type: DataTypes.STRING(20), allowNull: true, defaultValue: null, comment: '工单号' },
  requestId: { type: DataTypes.STRING(50), allowNull: true, defaultValue: null, comment: '请求Id' },
  reference: { type: DataTypes.STRING(200), allowNull: true, comment: '后台备注' },
  created_at: {
    type: DataTypes.DATE, allowNull: false, comment: '创建时间'
  },
  updated_at: {
    type: DataTypes.DATE, allowNull: false, comment: '更新时间'
  },
  version: {
    type: DataTypes.INTEGER, allowNull: false, defaultValue: 0, comment: '版本控制'
  }
}, {
  sequelize: getSequelize(),
  tableName: 'sms_sign',
  comment: '短信签名'
});

// https://sequelize.org/api/v6/class/src/model.js~model#static-method-hasMany

export default SmsSign;
